Page Index
8 A 文件上传和存储功能
JL 于 2023-03-27 16:20:12 +08:00 修改了此页面
此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

JooLun版本

  • V2.7.0+

流程介绍

  • 通过上传接口UploadFileController.java上传文件
/**
 * 上传文件
 * @param mulFile
 * @param dir 文件存放目录
 * @param fileType 文件类型 image:图片
 * @return
 */
@ApiOperation(value = "上传文件")
@PostMapping("/upload")
public String uploadFile(@RequestParam("file") MultipartFile mulFile,
                         @RequestParam("dir") String dir,
                         @RequestParam("fileType") String fileType) throws Exception {
    File file = FileUtils.multipartFileToFile(mulFile);
    Map<Object, Object> responseData = new HashMap<>();
    dir = StrUtil.format("{}/{}",TenantContextHolder.getTenantId(),  dir);
    SysConfigStorage sysConfigStorage = sysConfigStorageService.getOne(Wrappers.emptyWrapper());
    if(sysConfigStorage == null){
        throw new RuntimeException("请先配置文件存储信息");
    }
    if(CommonConstants.FILE_TYPE_IMG.equals(fileType) &&
            StrUtil.isNotBlank(sysConfigStorage.getWaterMarkContent())){//图片添加水印
        //添加水印
        file = WaterMarkUtils.markStr(file, Color.GRAY, sysConfigStorage.getWaterMarkContent());
    }
    responseData.put("link", UploadFileUtils.uploadFile(file,dir,sysConfigStorage));
    return JSONUtil.toJsonStr(responseData);
}
  • 文件上传相关配置application-dev.yml,比如文件大小设置
spring:
    servlet:
        multipart:
            location: /data/tmp  # 缓存文件存放路径
            max-file-size: 10MB  # 单个文件的大小
            max-request-size: 100MB  # 上传文件的总大小
  • 正式环境还需在nginx中配置文件上传的相关参数,比如文件大小限制,详情请百度

集成SKD

  • 阿里OSS
  • 七牛云
  • minio
  • 腾讯cos v2.7.1

配置

  • 阿里OSS、腾讯cos、七牛云请去相应官网申请账号
  • 注意:必须设为公共读,阿里OSS还要要配置跨域,如下面图片
  • 后台【系统管理】-【系统配置】-【文件存储配置】配置存储账号

  • minio需要自建服务,用法和阿里OSS类似;觉得阿里OSS、七牛云收费贵不想用的,可以使用minio,自己部署存储服务器,具体安装使用请自行百度
  • minio的accessKeyId、accessKeySecret就是minio后台的账号、密码

后台参数对应endpoint、bucket

  • minio要保证minio地址外网能访问

  • 腾讯cos

  • 阿里oss

  • 七牛云